/* 

给定一个已按照 非递减顺序排列  的整数数组 numbers ，请你从数组中找出两个数满足相加之和等于目标数 target 。

函数应该以长度为 2 的整数数组的形式返回这两个数的下标值。numbers 的下标 从 1 开始计数 

示例：
输入：numbers = [2,7,11,15], target = 9
输出：[1,2]
解释：2 与 7 之和等于目标数 9 。因此 index1 = 1, index2 = 2 。

*/

/* 
解读：有序数组
思路：双指针
因为数组有序，两个指针分别指向头尾，如果两项之和大于目标值，则右侧指针左移，反之左侧指针右移

*/


/**
 * @param {number[]} numbers
 * @param {number} target
 * @return {number[]}
 */
 var twoSum = function(numbers, target) {
    const n=numbers.length
    let left=0,right=n-1;
    while(left<right){
        if(numbers[left]+numbers[right]==target){
            return [left+1,right+1]
        }else if(numbers[left]+numbers[right]>target){
            right--
        }else{
            left++
        }
    }
};
/* 
时间复杂度：O(N)
*/

// 运行
let nums = [2, 7, 11, 15], target = 9
let res = twoSum(nums, target)
console.log(res);